package Factory;

public class Singleton {

//    /**
//     * 创建方式：饿汉式--> 当类加载的时候，就进行了实例化
//     */
//    //直接创建对象
//    public static Singleton instance = new Singleton();
//
//    //私有化构造函数
//    private Singleton(){
//    }
//
//    //返回对象实例
//    public static Singleton getInstance(){
//        return instance;
//    }


    /**
     * 懒汉式 --->采用双重检查锁来进行判定，
     */
    //volatile关键字用来避免重新排序
    private static volatile Singleton singleton = null;

    //创建私有构造方法
    private Singleton(){}

    //对外提供方法
    public static Singleton getInstance(){
        if(singleton == null){
            synchronized(Singleton.class){
                if(singleton == null){
                    singleton = new Singleton();
                }
            }
        }
        return singleton;
    }

}
